package fms.webservice.server.service;

import fms.webservice.server.common.Request;
import fms.webservice.server.common.Response;
import fms.webservice.server.common.ServiceType;
import fms.webservice.server.mq.ActivemqSender;
import fms.webservice.server.parser.AutoPosRequestParser;
import fms.webservice.server.parser.IRequestParser;
import fms.webservice.server.parser.PosRequestParser;
import fms.webservice.server.parser.WindRequestParser;
import org.apache.log4j.Logger;

public class MyService {

    private static Logger logger = Logger.getLogger(MyService.class);

    public Response GetWind(Request args) {
        return GetResponseInfo(args);
    }

    public Response GetPosition(Request args) {
        return GetResponseInfo(args);
    }

    public Response GetAutoPos(Request args) {
        return GetResponseInfo(args);
    }

    public Response GetResponseInfo(Request request) {
        Response response = null;
        IRequestParser requestParser = null;

//        logger.error(request.getServiceType() + " ----- " + ServiceType.WindRequest.ordinal());

        logger.info("[执行] 请求类型判断");

        // 飞机下发位置报请求(0)：创建请求和响应类
        // 飞机下发位置报请求(1)：添加一个方法 GetAutoPos
        // 飞机下发位置报请求(2)：添加类型判断
        // 飞机下发位置报请求(3)：添加解析类（接收解析请求、访问数据库、返回组装响应数据）
        //                       buildSqlUtil工具添加新的方法（从CPT_INFO取数据，航路点 串）
        // 飞机下发位置报请求(4)：生成客户端代码，在WindService类中写测试方法
       if(request.getServiceType().equals(ServiceType.WindRequest.ordinal()+"")) {
            requestParser = new WindRequestParser();
           logger.info("[执行-请求类型判断] 风温数据请求");
       }else if(request.getServiceType().equals(ServiceType.PosRequest.ordinal()+"")) {
           PosRequestParser posRequestParser = new PosRequestParser();
           posRequestParser.setSender(new ActivemqSender());
           requestParser = posRequestParser;
           logger.info("[执行-请求类型判断] 位置数据请求");
       }else if(request.getServiceType().equals(ServiceType.AutoPosRequest.ordinal()+"")) {
           requestParser = new AutoPosRequestParser();
           logger.info("[执行-请求类型判断] 自动位置数据请求");
       }
       if(requestParser!=null) {
           logger.info("[执行] 请求解析");
           response = requestParser.parser(request);
       }

        response.setServiceType(request.getServiceType());
        response.setVersion(request.getVersion());
        logger.info("[完成] 返回请求结果");
        return response;
    }
}
